package com.youjiang.springboot.utils;

import com.youjiang.springboot.constant.ErrorCodeMap;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

/**
 * Description: Json格式返回工具类
 * Company: youjiang
 * @author Kwum
 * @date 2017年3月21日 上午11:12:54
 * @version 1.0
 */

public class JsonFormatUtils {

	/**
	 * 状态码
	 */
	private static final String JSONCODE = "code";
	
	/**
	 * 消息内容
	 */
	private static final String JSONMSG = "msg";
	
	/**
	 * 数据名
	 */
	private static final String JSONDATA = "data";
	
	/**
	 * 格式化json返回（data里有字符串）
	 * @param code 状态码：1成功、-1服务器出错、其余情况请查看返回错误码文档
	 * @param data 字符串类型的数据
	 * @return 返回json数据，包含状态码、消息、数据，例:{"code":1, "msg":"成功", "data":"看情况而定"}
	 * @author kwum
	 */
	public static JSONObject formatReturn(int code, String data){
		JSONObject json = new JSONObject();
		json.put(JSONCODE, code);
		if(code == 1){
			json.put(JSONMSG, "成功");
			json.put(JSONDATA, data);
			return json;
		}
		if(code == -1){
			json.put(JSONMSG, "服务器繁忙, 请稍后再试");
			json.put(JSONDATA, data);
			return json;
		}
		json.put(JSONMSG, ErrorCodeMap.map.get(String.valueOf(code)));
		json.put(JSONDATA, data);
		return json;
	}
	
	/**
	 * 格式化json返回（data为null）
	 * @param code 状态码：1成功、-1服务器出错、其余情况请查看返回错误码文档
	 * @return 返回json数据，包含状态码、消息、数据，例:{"code":1, "msg":"成功", "data":null}
	 * @author kwum
	 */
	public static JSONObject formatReturn(int code){
		JSONObject json = new JSONObject();
		json.put(JSONCODE, code);
		json.put(JSONDATA, null);
		if(code == 1){
			json.put(JSONMSG, "成功");
			return json;
		}
		if(code == -1){
			json.put(JSONMSG, "服务器繁忙, 请稍后再试");
			return json;
		}
		json.put(JSONMSG, ErrorCodeMap.map.get(String.valueOf(code)));
		return json;
	}
	
	/**
	 * 格式化json返回（data为json对象）
	 * @param data json对象类型的数据
	 * @return 返回json数据，包含状态码、消息、数据，例:{"code":1, "msg":"成功", "data":{"userNick":"qwe"}}
	 * @author kwum
	 */
	public static JSONObject formatReturn(JSONObject jsonObject){
		JSONObject json = new JSONObject();
		json.put(JSONCODE, 1);
		json.put(JSONMSG, "成功");
		json.put(JSONDATA, jsonObject);
		return json;
	}
	
	/**
	 * 格式化json返回（data为json数组）
	 * @param data json数组类型的数据
	 * @return 返回json数据，包含状态码、消息、数据，例:{"code":1, "msg":"成功", "data":[{"userNick":"qwe"}]}
	 * @author kwum
	 */
	public static JSONObject formatReturn(JSONArray jsonArray){
		JSONObject json = new JSONObject();
		json.put(JSONCODE, 1);
		json.put(JSONMSG, "成功");
		json.put(JSONDATA, jsonArray);
		return json;
	}
}
